home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-09-21 | 3.1 KB | 107 lines | [TEXT/ttxt] |
- // source container: movie-document.dylan
-
-
- define class <movie-document> (<document>)
- slot movie :: <Movie>,
- init-value: as(<Movie>, 0);
- slot movie-view :: <movie-view>;
- end class;
-
- define method main-file-type (document :: <movie-document>)
- ignore(document);
- $MovieFileType;
- end method;
-
- //opens up a window containing a view onto the movie
- define method make-windows (document :: <movie-document>)
- let movie-bounds =
- with-stack-structure(box(<qd-rect>),
- begin
- GetMovieBox(document.movie, box);
- get-rect(box);
- end);
- let movie-size = point(movie-bounds.width, movie-bounds.height);
-
- document.movie-view := make(<movie-view>,
- location: $zero-point,
- size: movie-size);
-
- let window = make(<window>,
- location: point(100, 100),
- size: movie-size,
- next-handler: document,
- target-view: document.movie-view,
- has-go-away: #t);
-
- add-sub-view(window.root-view, document.movie-view);
-
- open(window);
-
- set-movie-to-view(document.movie-view, document.movie);
- make-document-title(document);
- end method;
-
- define method open-files (document :: <movie-document>)
- open-movie-file(document.main-file);
- end method;
-
- define method close-files (document :: <movie-document>)
- close-movie-file(document.main-file);
- end method;
-
- // gets the movie data in correctly from a file
- define method read-from-file (document :: <movie-document>,
- file :: <file>)
-
- let (err, new-movie,resId) = NewMovieFromFile( file.data-ref-num, "", 0);
- ignore(resId);
- fail-os-error(err);
- document.movie := new-movie;
- close-files(document);
-
- end method;
-
-
- // highlights the menu items in the Movie menu
- define method do-setup-menus (document :: <movie-document>)
- next-method();
-
- enable-item(#"show-poster");
- enable-item(#"set-poster");
-
- end method;
-
- // menu callback for Show Poster menu item - goes to the poster frame
- define method do-event (document :: <movie-document>,
- event :: <menu-event>,
- id == #"show-poster")
- ignore(event, id);
-
- unless (nil?(document.movie))
- let movie = document.movie;
- let poster-time = GetMoviePosterTime(movie);
- let movie-time = GetMovieTime(movie, as(<TimeRecord>, 0));
-
- unless (poster-time = movie-time)
- StopMovie(movie);
- SetMovieTimeValue(movie, poster-time);
- end unless;
-
- end unless;
- end method;
-
- // menu callback for Set Poster menu item - sets movie poster to be the
- //current frame
- define method do-event (document :: <movie-document>,
- event :: <menu-event>,
- id == #"set-poster")
- ignore(event, id);
-
- unless (nil?(document.movie))
- let movie = document.movie;
- let new-poster-time = GetMovieTime(movie, as(<TimeRecord>, 0));
-
- SetMoviePosterTime(movie, new-poster-time);
- end unless;
-
- end method;